package org.base23.order.authentication.handler.resourceapi.login;

import java.util.Map;
import org.springframework.security.authentication.AbstractAuthenticationToken;

public class LoginAuthentication extends AbstractAuthenticationToken {

  private String userInfo; // 前端传过来
  private Map currentUser; // 认证成功后，后台从数据库获取信息

  public LoginAuthentication() {
    // 权限，用不上，直接null
    super(null);
  }

  @Override
  public Object getCredentials() {
    // 根据SpringSecurity的设计，授权成后，Credential（比如，登录密码）信息需要被清空
    return isAuthenticated() ? null : userInfo;
  }

  @Override
  public Object getPrincipal() {
    // 根据SpringSecurity的设计，授权成功之前，getPrincipal返回的客户端传过来的数据。授权成功后，返回当前登陆用户的信息
    return isAuthenticated() ? currentUser : userInfo;
  }

  public String getUserInfo() {
    return userInfo;
  }

  public void setUserInfo(String userInfo) {
    this.userInfo = userInfo;
  }

  public Map getCurrentUser() {
    return currentUser;
  }

  public void setCurrentUser(Map currentUser) {
    this.currentUser = currentUser;
  }
}
